home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-04-16 | 896 b | 57 lines |
- 10 INPUT "input number of items";N
- 20 DIM ARRAY(N)
- 30 FOR I=1 TO N
- 40 'INPUT "input item ";ARRAY(I)
- 45 ARRAY(I)=INT(RND*(N+1))
- 50 NEXT
- 55 LPRINT TIME$
- 60 DIM STACK(N,2)
- 70 STKPTR=0
- 80 X=1
- 90 Y=N
- 100 GOSUB 460
- 110 WHILE STKPTR > 0
- 120 GOSUB 500
- 130 LEND=X
- 140 REND=Y
- 150 LPT=LEND
- 160 RPT=REND
- 170 WHILE LPT < RPT
- 180 WHILE (ARRAY(LPT)<=ARRAY(RPT))
- 190 LPT=LPT+1
- 200 IF(LPT>=RPT) GOTO 330
- 210 WEND
- 220 Z=ARRAY(LPT)
- 230 ARRAY(LPT)=ARRAY(RPT)
- 240 ARRAY(RPT)=Z
- 250 WHILE (ARRAY(LPT)<=ARRAY(RPT))
- 260 RPT=RPT-1
- 270 IF (LPT>=RPT) GOTO 330
- 280 WEND
- 290 Z=ARRAY(LPT)
- 300 ARRAY(LPT)=ARRAY(RPT)
- 310 ARRAY(RPT)=Z
- 320 WEND
- 330 IF (RPT-1)<=LEND GOTO 370
- 340 X=LEND
- 350 Y=(RPT-1)
- 360 GOSUB 460
- 370 IF (RPT+1)>=REND GOTO 410
- 380 X=(RPT+1)
- 390 Y=REND
- 400 GOSUB 460
- 410 WEND
- 415 LPRINT TIME$
- 420 FOR I =1 TO N
- 430 PRINT ARRAY(I)
- 440 NEXT
- 450 END
- 460 STKPTR=STKPTR+1
- 470 STACK(STKPTR,1)=X
- 480 STACK(STKPTR,2)=Y
- 490 RETURN
- 500 X=STACK(STKPTR,1)
- 510 Y=STACK(STKPTR,2)
- 520 STKPTR=STKPTR-1
- 530 RETURN
-